草庐IT

C++ 堆损坏

全部标签

单片机FLASH芯片损坏确定及修复方法

在写SD卡存储程序时,测试发现程序一直处于FLASH格式化状态。如下图所示。然后测试了正点原子的FATFS例程,发现同样没法是FLASH无法格式化,如图所示。 然后下载正点原子例程USB读卡器实验,发现电脑只能显示SD卡一个盘有内存,FLASH的盘是不显示内存的。因此确定是FLASH硬件损坏。单片机FLASH芯片损坏的主要原因包括:1.过压或过电流:如果单片机FLASH芯片受到超过其额定电压或电流的输入,会导致芯片内部结构受损,从而损坏FLASH存储单元。2.静电放电:静电放电是指在操作或处理芯片时,由于静电累积导致放电,可能会损坏单片机FLASH芯片。3.温度异常:极高或极低的温度环境可能会

c++ - 释放内存时堆损坏

我有一个类如下structCliHandler{CliHandler(intargc,char**argv);~CliHandler();intdoWork();intargc_;char**argv_;private:CliHandler(constCliHandler&){}CliHandler&operator=(constCliHandler&){}};//构造函数CliHandler::CliHandler(intargc,char**argv){//setcommandlineparametersargc_=argc;argv_=(char**)malloc(argc_*s

c++ - WinDbg 是否能够检测到由于无效向下转换而导致的内存堆损坏?

这是我刚刚发现的错误!万岁。该错误是由于不正确的向下转换引起的,实际上我正在使用static_cast而不是dynamic_cast.我的应用程序非常大并且是多线程的并且与其他应用程序交互。所以调试非常困难。我试过使用WinDbg,GFlags,和ApplicationVerifier没有结果。当然是因为我不知道如何使用这些工具。是否有可能通过使用WinDbg等工具找到由于无效向下转换而导致的内存堆损坏?如果是,如何? 最佳答案 Windbg!heap–s–v命令可以揭示损坏的堆0:008>!heap-s-vHeapFlagsRes

c++ - 堆已通过代码在多个地方损坏

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭7年前。Improvethisquestion我有这个使用CPP创建的多米诺骨牌游戏。播放时出现此错误:Unhandledexceptionat0x76FF5934(ntdll.dll)inDomino.exe:0xC0000374:Aheaphasbeencorrupted(parameters:

C++:从复制构造函数外部修改对象成员时 vector 内存损坏,但从内部修改时则不会

#include#include#includeclassa_class{public:intnum_IN;a_class():num_IN(0){}a_class(a_classconst&origin){/*Initialise();*/}//ifnotcalledhere,erroroccursvoidInitialise(){num_IN=5;}};intmain(){std::vectorthe_vector;for(intq=0;q我不明白从CC外部和内部调用它之间的区别。我也不知道为什么它无论如何都会引起问题。 最佳答案

c++ - fwrite() 文件损坏 C++

我是C++的新手(从C#迁移过来),所以我不太确定这里发生了什么。我想做的是从文件中读取图像并将其写入输出文件,但每当我这样做时,文件的某些部分似乎已损坏。我检查了内存中的数据,它确实匹配,所以我相信罪魁祸首一定是fwrite()发生了什么,尽管它总是可能只是我做错了什么。这是一些示例数据:http://pastebin.com/x0eZin6K还有我的代码://usedtofigureoutifreadinginonegiantswoophastodowithcorruptionintBlockSize=0x200;//Readthefiledataunsignedchar*data

c++ - 在 vector 中插入元素会损坏指向 vector 的指针吗?

在一个模拟逻辑门的程序中,我从使用数组切换到了nodeN[1000];vectorvectorN;我的程序在使用vector之前运行得很好,但现在它打印出错误的结果,所以我尝试调试并发现错误发生在这里:node*Simulator::FindNode(stringh){inti;for(i=0;i>NodeName;inp1=FindNode(NodeName);s1=inp1;inp_file>>NodeName;inp2=FindNode(NodeName);//inp1isdestroyedhereinp_file>>NodeName;out=FindNode(NodeName)

c++ - 系统( "pause")导致堆损坏

所以这很奇怪,对此可能有一个非常简单的解释,但我使用的机器我通常不使用出厂默认安装的VS2010进行开发。下面发布的代码正是我正在运行,它导致出现这条熟悉的消息:WindowshastriggeredabreakpointinProjectB.exe.Thismaybeduetoacorruptionoftheheap,whichindicatesabuginProjectB.exeoranyoftheDLLsithasloaded.ThismayalsobeduetotheuserpressingF12whileProjectB.exehasfocus.Theoutputwindow

c++ - Visual Studio 2008/10 的即时窗口中的 "search memory"是否损坏?

在VisualStudio2005中,我开始严重依赖MSVC的立即窗口来处理itsusefulsearch-through-memory-for-byte-patternsfeature。.我们最近升级到VS2010,现在.S命令似乎不再起作用了。对于我尝试的任何搜索,即使我直接复制粘贴theexamplesfromMSDN,当我尝试使用内存搜索时,总是出现以下错误:CXX0014:Error:missingoperandOthershavereportedthisproblemhereonSO,但谷歌没有出现任何有用的讨论。此功能在MSVC2010中是否被简单地破坏了?我感觉微软在他

c++ - 使用错误的 "this"指针调用构造函数。这是堆栈损坏吗?

编辑:我在评论者的帮助下弄明白了。回答我标题中提出的问题:不,这不是堆栈损坏,它的gdb报告了错误的值。该程序实际上按预期运行并且具有正确的this指针。促使我发布此问题的实际错误行为可能与我在此处描述的问题完全无关。首先是一个警告。我相信这是一个内存损坏问题,除了“彻底检查你的代码”之外,我通常不会期望得到答案,但我已经看到这种行为反复出现,希望你们中的一些人对这个问题有洞察力以及我是如何做的可以找到它的来源。我目前正在实现区间静态分析,它跟踪C程序中变量的可能范围。我的基区间类的复制构造函数如下所示:itvt::itvt(constitvt&i):_i(i.type==INTBV?